<?php
/**
 * 想搞一个正则表达式大全
 * User: xiaojuntao
 * Date: 2020-06-10
 * Time: 15:58
 */


/**
 * check_is_email   判断字符串是否是邮箱地址，并在第二个参数中返回匹配结果
 * @param $str
 * @param $rs
 * @return int
 * @author:xjw129xjt 531201650@qq.com
 */
function check_is_email($str, &$rs = '')
{
    return preg_match("/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/", $str, $rs);
}


/**
 * check_is_mobile    判断字符串是否是手机号码，并在第二个参数中返回匹配结果
 * @param $str
 * @param $rs
 * @return int
 * @author:xjw129xjt 531201650@qq.com
 */
function check_is_mobile($str, &$rs = '')
{
    return preg_match("/^(?:(?:\+|00)86)?1\d{10}$/", $str, $rs);
}

/**
 * check_is_idcard    判断字符串是否是中国大陆身份证号，并在第二个参数中返回匹配结果
 * 身份证号, 支持1/2代(15位/18位数字)
 * @param $str
 * @param $rs
 * @return int
 * @author:xjw129xjt 531201650@qq.com
 */
function check_is_idcard($str, &$rs = '')
{
    return preg_match("/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/", $str, $rs);

}


/**
 * check_password_h    判断字符串是否符合密码的标准，并在第二个参数中返回匹配结果
 * 密码强度校验，最少6位，包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符
 * @param $str
 * @param $rs
 * @return int
 * @author:xjw129xjt 531201650@qq.com
 */
function check_password_h($str, &$rs = ''){
    return preg_match("/^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/", $str, $rs);
}

/**
 * check_password_l    判断字符串是否符合密码的标准，并在第二个参数中返回匹配结果
 * 密码强度校验，6-16位
 * @param $str
 * @param $rs
 * @return int
 * @author:xjw129xjt 531201650@qq.com
 */
function check_password_l($str, &$rs = ''){
    return preg_match("/^[\w]{6,16}$/", $str, $rs);
}


/**
 * check_is_mac    判断字符串是否是Mac地址，并在第二个参数中返回匹配结果
 * @param $str
 * @param $rs
 * @return int
 * @author:xjw129xjt 531201650@qq.com
 */
function check_is_mac($str, &$rs = ''){
    return preg_match("/^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i", $str, $rs);

}